#ifndef BSW_LPIT_H_
#define BSW_LPIT_H_


#include 	"stdint.h"


#define 	LPIT_CH0	    0UL
#define 	LPIT_CH1	    1UL

#define 	LPIT_CH0_MASK	    1UL	/*channel 0 only will be select*/
#define 	LPIT_CH1_MASK	    2UL	/*channel 1 only will be select*/
#define 	LPIT_CH_MASK	    3UL /*channel 0 and channel 1 will be select*/


typedef struct 
{
	uint32_t                  u32_ChNum;		 			 /* 计时器通道数   eg:LPIT_CH0       */
	uint32_t									u32_clockSource;     /* 设置计数周期值 eg:LPIT_CH0_MASK  */
	uint32_t                  u32_Per_value;       /* 确定外围时钟源 eg:6              */
  uint32_t                  u32_mask;            /* 设置通道号     eg:56000          */  
  IRQn_Type 								Ch_IRQn;             /* 配置中断向量表 eg:LPIT0_Ch0_IRQn */ 
}Bsw_IPIT_Init_Cfg;

/********************************************************
**函数名：	BSW_LPIT_INIT
**功能：		初始化LPIT模块
**输入参数：u32_ChNum      设置的配置的通道号
**					clockSource		 时钟源
**					u32_Per_value  周期计数值
**返回值：	无
**注意：		例如: u32_ChNum : LPIT_CH0
**					clockSource = 6 -- SPLLDIV2_CLK
**					u32_Per_value = 56000 
*********************************************************/

void BSW_LPIT_INIT(Bsw_IPIT_Init_Cfg Lpit_Ch_Cfg);

/********************************************************
**函数名：	BSW_LPIT_EnableCh_IRQ
**功能：		启动定时器PIT 对应通道的中断
**输入参数：u32_mask 决定使能哪个通道
**返回值：	无
**注意：		例如: u32_mask : LPIT_CH0_MASK
*********************************************************/

void BSW_LPIT_EnableCh_IRQ(Bsw_IPIT_Init_Cfg Lpit_Ch_Cfg);

/********************************************************
**函数名：	BSW_LPIT_DisableCh_IRQ
**功能：		关闭定时器PIT 对应通道的中断
**输入参数：u32_mask 决定关闭哪个通道
**返回值：	无
**注意：		例如: u32_mask : LPIT_CH0_MASK
*********************************************************/

void BSW_LPIT_DisableCh_IRQ( Bsw_IPIT_Init_Cfg Lpit_Ch_Cfg);

/********************************************************
**函数名：	BSW_LPIT_Start_Ch
**功能：	  启动定时器通道
**输入参数：u32_mask 决定关闭哪个通道
**返回值：	无
**注意：		例如: u32_mask : LPIT_CH0_MASK
*********************************************************/

void BSW_LPIT_Start_Ch(Bsw_IPIT_Init_Cfg  Lpit_Ch_Cfg);

/********************************************************
**函数名：	BSW_LPIT_Stop_Ch
**功能：	  停止定时器通道
**输入参数：u32_mask 决定关闭哪个通道
**返回值：	无
**注意：		例如: u32_mask : LPIT_CH0_MASK
*********************************************************/

void BSW_LPIT_Stop_Ch(Bsw_IPIT_Init_Cfg Lpit_Ch_Cfg);

/********************************************************
**函数名：	BSW_LPIT_SET_Period
**功能：	  设置计数器周期值
**输入参数：u32_Per_value
**返回值：	无
**注意：		例如: u32_Per_value : 56000
*********************************************************/

void BSW_LPIT_SET_Period(Bsw_IPIT_Init_Cfg Lpit_Ch_Cfg);
#endif
